home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / proc / migrate.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  3KB  |  110 lines

  1. /*
  2.  * migrate.h --
  3.  *
  4.  *    Declarations of types for process migration used only by the proc
  5.  *     module.
  6.  *
  7.  * Copyright 1986, 1988, 1989 Regents of the University of California
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software and its documentation for any purpose and without
  10.  * fee is hereby granted, provided that the above copyright
  11.  * notice appear in all copies.  The University of California
  12.  * makes no representations about the suitability of this
  13.  * software for any purpose.  It is provided "as is" without
  14.  * express or implied warranty.
  15.  *
  16.  *
  17.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/proc/migrate.h,v 9.6 91/11/15 21:02:40 kupfer Exp $ SPRITE (Berkeley)
  18.  */
  19.  
  20. #ifndef _MIGRATE
  21. #define _MIGRATE
  22.  
  23. /*
  24.  * Parameters for a remote Proc_Wait.
  25.  */
  26.  
  27. typedef struct {
  28.     Proc_PID     pid;        /* ID of process doing the wait */
  29.     int     numPids;    /* number of pids in array */
  30.     Boolean     flags;      /* Flags to Proc_Wait. */
  31.     int     token;      /* token to use for remote notify call */
  32. } ProcRemoteWaitCmd;
  33.  
  34. /*
  35.  * Types of commands passed related to migration:
  36.  *
  37.  * PROC_MIGRATE_CMD_INIT    - Initiate a migration.
  38.  * PROC_MIGRATE_CMD_ENTIRE    - Process control block.
  39.  * PROC_MIGRATE_CMD_UPDATE    - Update user information that may change, 
  40.  *                    such as priorities or IDs.
  41.  * PROC_MIGRATE_CMD_CALLBACK     - Callback by another module to transfer
  42.  *                  additional encapsulated state.
  43.  * PROC_MIGRATE_CMD_DESTROY    - Destroy a migrated process due to an error
  44.  *                  during migration.
  45.  * PROC_MIGRATE_CMD_RESUME    - Resume a migrated process after transfer.
  46.  * PROC_MIGRATE_CMD_SUSPEND    - Remote process has suspended or continued.
  47.  */
  48.  
  49. #define PROC_MIGRATE_CMD_INIT        0
  50. #define PROC_MIGRATE_CMD_ENTIRE        1
  51. #define PROC_MIGRATE_CMD_UPDATE        2
  52. #define PROC_MIGRATE_CMD_CALLBACK    3
  53. #define PROC_MIGRATE_CMD_DESTROY    4
  54. #define PROC_MIGRATE_CMD_RESUME        5
  55. #define PROC_MIGRATE_CMD_SUSPEND    6
  56.  
  57. #define PROC_MIGRATE_CMD_NUM_TYPES    7
  58.     
  59. /* 
  60.  * Data sent to the other host related to migration.  This is done
  61.  * either to perform the entire state transfer or parts (see above).
  62.  * It always specifies a processID, which may be NIL to indicate a new
  63.  * process is to be created (only during PROC_MIGRATE_INIT).
  64.  */
  65.  
  66. typedef struct {
  67.     Proc_PID        remotePid; /* Process ID on other host. */
  68.     int            command;   /* What to do. */
  69.     int            totalSize; /* Total size of command buffer. */
  70.     int            offset;       /* Offset into total buffer. */
  71. } ProcMigCmd;
  72.     
  73.  
  74. /*
  75.  * Parameters when initiating migration to another machine.  This is done
  76.  * to check permission as well as incompatible versions.
  77.  */
  78.  
  79. typedef struct {
  80.     int     version;    /* Migration version number of machine starting
  81.                  * migration (should come first) */
  82.     Proc_PID     processID;    /* ID of process being migrated */
  83.     int        userID;        /* userID of process being migrated */
  84.     int        clientID;   /* ID of host issuing command */
  85. } ProcMigInitiateCmd;
  86.  
  87. /*
  88.  * Number of times to try an RPC before giving up due to RPC_TIMEOUT, while
  89.  * waiting for the host to come up.
  90.  */
  91.  
  92. #define PROC_MAX_RPC_RETRIES 2
  93.  
  94. /*
  95.  * Parameter to ProcRecordUsage:
  96.  *     PROC_MIG_USAGE_REMOTE_CPU     - time used by remote processes
  97.  *     PROC_MIG_USAGE_TOTAL_CPU    - time used by all processes
  98.  *     PROC_MIG_USAGE_POST_EVICTION    - time used subsequent to 1st
  99.  *                       eviction.
  100.  *
  101.  */
  102. typedef enum {
  103.     PROC_MIG_USAGE_REMOTE_CPU,     
  104.     PROC_MIG_USAGE_TOTAL_CPU,
  105.     PROC_MIG_USAGE_POST_EVICTION,
  106. } ProcRecordUsageType;
  107.  
  108.  
  109. #endif /* _MIGRATE */
  110.